package com.yanggu.spark.core.rdd.transform.keyvalue

import org.apache.spark.{SparkConf, SparkContext}

//Key-Value类型-Join算子
object RDD23_Join {

  def main(args: Array[String]): Unit = {

    //1. 创建sparkConf配置对象
    val sparkConf = new SparkConf().setMaster("local[*]").setAppName("spark")

    //2. 创建spark上下文对象
    val sparkContext = new SparkContext(sparkConf)

    //3. 从内存中创建RDD
    val rdd = sparkContext.makeRDD(Array((1, "a"), (2, "b"), (3, "c")))
    val rdd1 = sparkContext.makeRDD(Array((1, 4), (2, 5), (7, 6)))
    rdd.join(rdd1).collect().foreach(println)

    //4. Join算子。和sql的join类似。只有当两个RDD中都存在相同的key时, 才会保留
    //在类型为(K,V)和(K,W)的RDD上调用，返回一个相同key对应的所有元素连接在一起的(K,(V,W))的RDD
    //如果key只存在一个RDD中, 那么就会直接丢弃
    val value = rdd.join(rdd1)

    //5. 打印
    value.collect().foreach(println)

    //6. 释放资源
    sparkContext.stop()
  }

}
